import "reflect-metadata";
import { createTestingConnections, closeTestingConnections } from "../../utils/test-utils";
import { Connection } from "../../../src";
import { User } from "./entity/UserEntity";

import { expect } from "chai";

describe("github issues > #5365 Generated Identity for Postgres 10+", () => {

    let connections: Connection[];
    before(async () => connections = await createTestingConnections({
        entities: [User],
        schemaCreate: false,
        dropSchema: true,
        enabledDrivers: ["postgres"],
    }));
    after(() => closeTestingConnections(connections));
    it("should produce proper SQL for creating a table with identity column", () => Promise.all(connections.map(async connection => {
        const sqlInMemory = await connection.driver.createSchemaBuilder().log();
        expect(sqlInMemory).to.have.property("upQueries").that.is.an("array").and.has.length(1);
        expect(sqlInMemory.upQueries[0]).to.have.property("query").that
            .eql(`CREATE TABLE "user" ("id" integer GENERATED BY DEFAULT AS IDENTITY NOT NULL, CONSTRAINT "PK_cace4a159ff9f2512dd42373760" PRIMARY KEY ("id"))`);
    })));
});
